import {ADD_LIST_ITEM} from './actionTypes';
// 深度克隆对象函数
function deepCopy(obj){
    //如果是非对象直接返回，包括function（特殊）
    if(typeof obj !== 'object') return obj;
    //如果是null
    if(obj === null) return null;
    //如果是日期对象
    if(obj instanceof Date) return new Date(obj);
    //如果是正则对象
    if(obj instanceof RegExp) return new RegExp(obj);
    //不直接定义[]或{}是为了要保留该对象的原型链
    var tempObj = new obj.constructor();
    for(var key in obj){
        tempObj[key] = typeof obj[key] == 'object' ? deepCopy(obj[key]) : obj[key];
    }
    return tempObj;
}

const defaultState = {
    list: [1,2,3]
}

export default (state = defaultState, action) => {
    if(action.type === 'ADD_LIST_ITEM'){
        let newState = deepCopy(state);     //reducer不能直接改变state，需要复制出来一份
        newState.list.push(action.value);
        return newState;
    }
    return state;
}
